<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			// 正则表达式在线测试工具https://c.runoob.com/front-end/854			
			// 参考https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp
			// 1.利用RegExp对象创建正则表达式		
			var regexp = new RegExp(/123/);
			console.log(regexp);
			// 2.利用字面量创建正则表达式
			var reg = /123/; //只要包含123都是true
			// 3.test方法用来检测字符串是否符合正则表达式的要求规范
			console.log(reg.test(612345)); //true
			console.log(reg.test('abc')); //false
			console.log('-------------------------------------------------------------');
			var reg2 = /^abc/; //只要以abc开头的都是true
			console.log(reg2.test('abcd')); //true
			console.log(reg2.test('aabc')); //false
			console.log('-------------------------------------------------------------');
			var reg3 = /^abc$/; //精准匹配，必须是abc字符串才符合规范
			console.log(reg3.test('abc')); //true
			console.log(reg3.test('abcd')); //false
			console.log(reg3.test('aabcd')); //false
			console.log(reg3.test('abcabc')); //false
			console.log('-------------------------------------------------------------');
			var reg4 = /[abc]/; //只要包含a||b||c，都为true
			console.log(reg4.test('mac')); //true
			var reg5 = /^[abc]$/; //三选一，必须是其中一个字母才返回true
			console.log(reg5.test('aa')); //false
			console.log(reg5.test('a')); //true
			console.log(reg5.test('b')); //true
			console.log(reg5.test('c')); //true
			console.log(reg5.test('abc')); //false
			var reg6 = /^[a-z]$/; //26个英文小写字母随便一个都为true
			console.log(reg6.test('f')); //true
			console.log('-------------------------------------------------------------');
			// 字符组合		
			var reg7 = /^[a-zA-Z]$/; //26个英文大小写字母随便一个都为true
			console.log(reg7.test('F')); //true
			var reg8 = /^[a-zA-Z0-9-_+/]$/; //随便输入其中一个都为true
			console.log(reg8.test('/')); //true
			var reg9 = /^[^a-zA-Z0-9]$/; //括号内添加^,取反
			console.log(reg9.test('+')); //true
			console.log(reg9.test('a')); //false
			console.log('-------------------------------------------------------------');
			
			// 量词符，让某个字符重复的次数	
			//* 相当于>=0,可以出现0次或很多次
			var reg10 = /^a*$/;
			console.log(reg10.test('')); //true
			console.log(reg10.test('aaaaa')); //true
			//+ 相当于>=1,可以出现0次或很多次	
			var reg11 = /^a+$/;
			console.log(reg11.test('')); //false
			console.log(reg11.test('aaaaa')); //true
			//? 相当于1||0,可以出现1次或0次
			var reg11 = /^a?$/;
			console.log(reg11.test('')); //true
			console.log(reg11.test('a')); //true	
			console.log(reg11.test('aaaaa')); //false
			console.log('-------------------------------------------------------------');
		
			//{3} 相当于=3,可以出现3次,
			var reg12 = /^a{3}$/;
			console.log(reg12.test('aaa')); //true
			console.log(reg12.test('aaaaa')); //false
			//{3,6} 相当于3<= n <=6,可以出现3-6次
			var reg13 = /^a{3,6}$/;
			console.log(reg13.test('aaa')); //true
			console.log(reg13.test('aaaaa')); //true
			console.log(reg13.test('aaaaaaaaa')); //false
			//{3,} 相当于>=3,可以出现3至3次以上,
			var reg14 = /^a{3,}$/;
			console.log(reg14.test('aaa')); //true
			console.log(reg14.test('aaaaaaaaaa')); //true
			console.log('-------------------------------------------------------------');
			var reg15 = /^[a-zA-Z0-9-_]{6,16}$/;
			console.log(reg15.test('123456789-_abcdefg')); //false
		
			// 扩展
			var reg16 = /^abc{3}$/; //只让c重复三次
			console.log(reg16.test('abccc')); //true
			var reg17 = /^(abc){3}$/; //让abc重复三次
			console.log(reg17.test('abcabcabc')); //true
			
			// 预定义类
			// \d 匹配0-9之间的任意数字,相当于[0-9]  
			// \D 取反[^0-9]     
			// \w 匹配任意的字母/数字/下划线,相当于[a-zA-Z0-9_]
			// \W 取反[^a-zA-Z0-9_]
			// \s 匹配空格,(包括换行符/制表符/空格符等),相当于[\t\r\n\v\f]
			// \S 取反[^\t\r\n\v\f]

			// replace替换(只能替换第一个)
			// g全局匹配  i忽略大小写
			// gi全局匹配+忽略大小写
			var str = 'andy1 和 baby00 还有 andy2';
			// var newstr = str.replace('andy','baby');
			var newstr = str.replace(/a|b|y/g, '*');
			console.log(newstr);
		</script>
	</body>
</html>
